POV-Ray : Newsgroups : povray.general : Steps & Time : Re: Steps & Time Server Time
28 Jul 2024 20:32:46 EDT (-0400)
  Re: Steps & Time  
From: Chris B
Date: 7 Aug 2007 07:55:32
Message: <46b85db4@news.povray.org>
"Simon" <povray@*NOSPAM*SOWare.co.uk> wrote in message 
news:46b82c5e$1@news.povray.org...
> Hi all,
>
> wonder if someone can suggest some methods for dealing with this:
>
> Currently: Whenever I want to have multiple steps in a scene, I do 
> something like the following:
>
> #declare Steps = 10;
> #declare Step = floor(Steps*clock);
> #declare Clock = mod(clock*Steps,1);
>
> #if(Step=0)
>    //Some rules for step 0 of the animation
> #else
>    //Some rules for after step 0, usually keeping an object stable
> #end
>
> As you can imagine, this becomes cumbersome very quickly if an object is 
> doing different things in each step - and it means a lot of nested IFs. In 
> the demo above, the steps are all of even Length, but that is easily 
> resolved with a bit of logic and an array.
>
> An alternative that sprang to mind was just to copy/paste into multiple 
> scenes but that means that if I decide to change something in a previous, 
> I have to propogate my changes up and down the timeline - also cumbersome.
>
> Any pointers would be greatly appreciated
>
> (whilst writing this I realised there should be a switch statement of some 
> kind and *tada* there is - but still, if anyone has any suggestions, 
> please let me know)

Hi Simon,

Lots of alternatives spring to mind.

Basically anything that can return a number (or numbers) can be used to 
control an animation, so you could look at using functions, macros, splines 
etc. You may be able to avoid 'if' statements and 'switch' statements by 
using your 'step' variable as the index to an array. For example, you could 
set up an array from 0 to 10 with values such as 
0,0,0,0.1,0.3,0.5,0.7,0.9,1,1 and then use the value of your 'step' variable 
to retrieve a value from the array. You could then use that value to 
retrieve the coordinates at that distance along a spline or along a sine 
wave or a normal at a point on a surface (trace) or a colour at a point in 
space in a pigment (eval_pigment) etc. etc.

You can then do whatever you want with that number/coordinate/normal/colour. 
With the above example you could use the position along a spline to control 
a camera position, so that it stays still for the first 3 'steps', 
accelerates along the spline and stops for a while at the end, or, if the 
spline stays within a box from <0,0,0> to <1,1,1>, you could use the 
'position' on the spline as the colour of an object.

Hope this inspires some ideas but be careful not to get too wacked out on 
psychedelia.

Regards,
Chris B.


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.